1. Field of the Invention
The present invention generally relates to computer systems, and more particularly to a method (and system) for reproducing the behavior of a multiprocessing computer system on another multiprocessing computing system.
2. Description of the Related Art
The need for emulating the behavior of one computer system on another has long been recognized. Several schemes have been proposed for doing this. A summary of these techniques appears in U.S. Pat. No. 5,832,205, incorporated herein by reference.
The solution of U.S. Pat. No. 5,832,205 includes a combined hardware/software scheme to perform the emulation of the instruction set of one processor on another. This scheme allows the hardware design to incorporate features that facilitate the execution of the target instruction set. For the same reason, however, this cannot emulate all systems equally efficiently.
SimOS (e.g., see Stephen A. Herrod, “Using Complete Machine Simulation to Understand Computer System Behavior,” Ph.D. Thesis, Stanford University, Feb. 1998), incorporated herein by reference, and SimICS (e.g., see Peter S. Magnusson, “A Design For Efficient Simulation of a Multiprocessor,” Proceedings of the First International Workshop on Modeling, Analysis, and Simulation of Computer and Telecommunication Systems (MASCOTS), La Jolla, Calif., January 1993, pp. 69-78) are examples of systems that can emulate without special hardware features. However, their performance is not as effective as that of U.S. Pat. No. 5,832,205.
In general, these systems employ various levels of translation. Techniques have been described (e.g., see Jim Turley, “Alpha Runs x86 Code with FX!32”, Mar. 5, 1996, Microprocessor Report) where the extent of translation is varied according to the extent of execution of the code.
However, computer systems today comprise more than one processor (e.g., a multiprocessor system as opposed to a uniprocessor system). The emulation of these multiprocessor systems has not been adequately addressed in the conventional techniques.
Additionally, besides the emulation of the multiple processors in such a system, additional aspects that need to be emulated are the various forms of communication between the processors, as well as the rules governing the order of access to memory locations by the multiple processors.
Both SimOS and SimICS attempt to emulate the behavior of multiprocessor systems. However they do not use multiprocessor systems as a host computing system.
Thus, conventional techniques have not addressed the problems of emulation of multiprocessors in multiprocessor systems.
That is, the conventional techniques (and the instruction set architecture) very often have been limited to (and refer to) a single processor systems being emulated, whereas most systems today are multiprocessor systems, especially the large systems (e.g., beyond the realm of the personal computer (PC)). Hence, techniques which have been used to emulate one processor by another processor simply will not work in a multiprocessor system environment. That is, the conventional emulation techniques designed for uniprocessor systems are impossible to perform when multiple processors are present.